/*
Date:20210423 23:55pm

key:递归时，子状态把视角放在父 左 右 这个状态是错误的。因为每个父 左 右符合并不能整体符合 父 右 左可能 小于父
因此回归中序遍历递增这一点，其实中序本来就可以有本轮节点和下一个中序节点。

大神做法非常妙
首先知道从底下开始，因此每一个root val要小于下一个。因此tmp<root val,那么tmp一开始就要是一个很小的数
然后 最后的右子树递归直接return也很简洁，不用再if。
 */
class Solution {
public:
    long min=-2147483648-1;
    bool isValidBST(TreeNode* root) 
    {
        if(root==nullptr){return 1;}
        else
        {
            if(!isValidBST(root->left))
            {
                return 0;
            }
            if(min<root->val)
            {
                min=root->val;
            }
            else
            {
                return 0;
            }
            return isValidBST(root->right);

        }
    }
};